
#ifndef _ALITTLE_UISYSTEM_H_
#define _ALITTLE_UISYSTEM_H_

#include <SDL2/SDL.h>
#include <SDL2/SDL_opengl.h>

#include <string>
#include <map>

#include "UIDisplayObjects.h"
#include "UIDisplayObject.h"

#include <ALittleClient/FileSystem/FileListener.h>

namespace ALittle
{

class UISystem : public FileListener
{
public:
	static UISystem& Instance();

public:
	void Setup();
	void Shutdown();
	void RegisterToScript();

public:
	void AddLayer(UIDisplayObject* object);

public:
	void Render();

public:
	void CreateTexture(const char* path);
	void ReleaseTexture(GLuint resource);
	void Notify(File* file);

private:
	UIDisplayObjects m_layer_list;

private:
	UISystem();
	~UISystem();
};

} // ALittle

#define g_UISystem ALittle::UISystem::Instance()

#endif // _ALITTLE_UISYSTEM_H_
